home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MSD-DU11.ARC / MSD MANAGER V1.7 (.txt) < prev    next >
Encoding:
Commodore BASIC  |  2019-04-13  |  19.2 KB  |  386 lines

  1. 2 PRINT"[147]":POKE53280,12:POKE53281,11:POKE646,1
  2. 3 POKE49152,10:IFPEEK(49152)<>10THENC0=1:GOTO6
  3. 6 DIMDOS%(65)
  4. 7 FR=FRE(0):IFFR<0THENFR=FR+65536:CNAX=0
  5. 8 S=(FR-400)/2:M2=INT(S/256)+1
  6. 10 CHO=0:PRINT"[147]";
  7. 15 PRINT"            ******************"
  8. 16 PRINT"            *    MSD SD-2    *"
  9. 20 PRINT"            *  DISK MANAGER  *"
  10. 21 PRINT"            *     PAGE 1     *"
  11. 25 PRINT"            ******************"
  12. 50 PRINT:PRINT" 1.  DISK DIRECTORY"
  13. 60 PRINT" 2.  FORMAT NEW DISK"
  14. 70 PRINT" 3.  INITIALIZE DISK"
  15. 80 PRINT" 4.  COPY FILE ON SAME DISK"
  16. 85 PRINT" 5.  COPY FILE ON A DIFFERNT DISK"
  17. 88 PRINT" 6.  COPY BOTH DOS WEDGE PROGRAMS"
  18. 90 PRINT" 7.  RENAME FILE"
  19. 100 PRINT" 8.  ERASE FILE(S)"
  20. 110 PRINT" 9.  VALIDATE FILES"
  21. 120 PRINT" 10. WRITE MSD SD-2 DISK MANAGER"
  22. 130 PRINT" 11. ERROR STATUS"
  23. 140 PRINT" 12. EXIT TO BASIC"
  24. 141 PRINT" 13. MSD FILE LOCKER"
  25. 142 PRINT" 14. MSD UNSCRATCH"
  26. 143 PRINT" 15. MSD/C64 AUTOSTART"
  27. 145 PRINT" 16.  PAGE 2 [146]"
  28. 170 INPUT"     CHOICE    [157][157][157][157]";CHOICE
  29. 180 IF(CHO<1)OR(CHO>19)THENPRINT"[145]";:GOTO170
  30. 200 ONCHOGOSUB250,300,350,400,900,1200,450,500,550,600,650,700,211,212,213,215
  31. 210 GOTO10
  32. 211 GOTO1300
  33. 212 GOTO1330
  34. 213 GOTO1320
  35. 215 GOTO1500
  36. 250 REM***DISPLAY DIRECTORY***
  37. 251 PRINT"[147]             DISK DIRECTORY [146]"
  38. 252 GOSUB1750
  39. 253 OPEN1,8,0,"$"+DR$
  40. 254 N$=CHR$(0)
  41. 255 GET #1,A$,A$
  42. 256 GET#1,A$,A$
  43. 257 IFA$=""GOTO284
  44. 258 GET#1,A$,B$
  45. 260 PRINTASC(A$+N$)+ASC(B$+N$)*256;
  46. 262 GET#1,A$
  47. 264 IFA$=""THENPRINT:GOTO256
  48. 266 PRINTA$;
  49. 268 GOTO262
  50. 284 CLOSE1:PRINT:PRINT:PRINT"   HIT ANY KEY TO RETURN"
  51. 290 GETX$:IFX$=""THEN290
  52. 295 RETURN
  53. 300 REM *** FORMAT (NEW) DISK ***
  54. 301 PRINT"[147]           FORMAT A NEW DISK [146]"
  55. 302 GOSUB1750:PRINT""
  56. 305 PRINT" INSERT DISK TO BE FORMATED IN DRIVE # "+DR$
  57. 310 INPUT"  INPUT DISK NAME";DISK$
  58. 320 PRINT:INPUT"  INPUT ID NAME";EXT$
  59. 325 MACRO$="N"+DR$+":"+DISK$+","+EXT$
  60. 330 OPEN15,8,15,MACRO$
  61. 340 CLOSE15:MACRO$="":RETURN
  62. 350 CNAX=0:REM *** INITIALIZE DISK ***
  63. 355 PRINT"[147]           INITIALIZE DISK [146]"
  64. 356 GOSUB1750:IFCNAX=8THENRETURN
  65. 360 PRINT"     INSERT DISK TO BE INITIALIZED"
  66. 365 PRINT"    IN DRIVE # "DR$
  67. 370 PRINT" HIT <RETURN> TO INITIALIZE"
  68. 371 GETI$:IFI$=""THEN371
  69. 372 IFI$<>CHR$(13)THEN372
  70. 380 OPEN15,8,15,"I"+DR$
  71. 390 CLOSE15:RETURN
  72. 400 REM *** COPY FILE ON SAME DISK ***
  73. 405 T$="COPY FILE ON SAME DISK"
  74. 406 GOSUB800
  75. 407 PRINTTAB(10)" COPY FILE ON SAME DISK [146]":PRINT
  76. 410 PRINT"   SOURCE FILE NAME "+N$(P):PRINT
  77. 420 PRINT:INPUT"   INPUT NEW FILE NAME";NWS$
  78. 425 MACRO$="C"+DR$+":"+NWS$+"="+DR$+":"+N$(P)
  79. 430 OPEN15,8,15,MACRO$
  80. 440 CLOSE15:MACRO$="":RETURN
  81. 450 REM *** RENAME FILE ***
  82. 455 T$="   RENAME A FILE  "
  83. 456 GOSUB800
  84. 460 PRINT"[147]":PRINT"OLD FILE NAME ";N$(P)
  85. 470 INPUT"  INPUT NEW FILE NAME ";NWS$
  86. 475 MACRO$="R"+DR$+":"+NWS$+"="+DR$+":"+N$(P)
  87. 480 OPEN15,8,15,MACRO$
  88. 490 CLOSE15:MACRO$="":RETURN
  89. 500 REM *** SCRATCH FILE ***
  90. 502 DR$=NO$
  91. 505 T$="   SCRATCH FILE   ":GOSUB800
  92. 510 PRINT"[147] FILE NAME TO BE SCRATCHED ";N$(P)
  93. 520 PRINT" HIT ANY KEY TO DELETE"
  94. 525 GETX$:IFX$=""THEN525
  95. 530 MACRO$="S"+NO$+":"+N$(P)
  96. 535 OPEN15,8,15,MACRO$
  97. 540 CLOSE15:MACRO$="":RETURN
  98. 550 REM *** VALIDATE FILES ***
  99. 555 PRINT"[147]           VALIDATE A DISK  [146]":PRINT
  100. 560 FORI=18TO1STEP-1:FL=I
  101. 561 GOSUB1750
  102. 570 PRINT:PRINT:PRINT"        HIT ANY KEY TO VALIDATE"
  103. 575 GETX$:IFX$=""THEN575
  104. 580 OPEN1,8,15,"V0:"
  105. 590 CLOSE1:RETURN
  106. 600 REM *** WRITE MSD MANAGER PROGRAM ***
  107. 605 PRINT"[147]      WRITE MSD SD-2 DISK MANAGER [146]"
  108. 606 GOSUB1750
  109. 610 PRINT"     INSERT DISK TO BE WRITTEN TO."
  110. 620 PRINT:PRINT:PRINT"   HIT ANY KEY TO WRITE MSD MANAGER"
  111. 622 GETX$:IFX$=""THEN622
  112. 625 OPEN1,8,15
  113. 630 SAVE"@"+DR$+":MSD MANAGER V1.7",8,1
  114. 635 CLOSE1
  115. 640 RETURN
  116. 650 REM *** DISPLAY ERROR STATUS ***
  117. 655 OPEN15,8,15
  118. 660 INPUT#15,A,A$,B$,C$
  119. 661 IFA=0THENRETURN
  120. 670 PRINT"[147]":PRINT:PRINT
  121. 680 PRINT"  ERROR STATUS:  "A$:PRINT:PRINT"  ERROR NUMBER:  "A:PRINT"  TRACK:  "B$
  122. 685 PRINT"  SECTOR:  "C$
  123. 690 PRINT:PRINT:PRINT"   HIT ANY KEY TO RETURN"
  124. 695 GETX$:IFX$=""THEN695
  125. 697 CLOSE15:CNAX=8:RETURN
  126. 700 REM *** RETURN TO BASIC ***
  127. 705 PRINT"[147]":PRINT:PRINT
  128. 710 PRINT"    NOTE:  MSD SD-2 DISK MANAGER STILL    RESIDENT IN MEMORY !"
  129. 720 END
  130. 800 REM *** CHOICE OF MENU ***
  131. 802 POKE53280,0:POKE53281,0
  132. 804 DIMN$(100):CX=54272:PRINT"[147]"
  133. 806 PRINT"[147][144]":X$="                                       "
  134. 808 FORX=1TO5:PRINTX$:NEXT
  135. 810 PRINT"":PRINTCHR$(117);
  136. 812 FORX=1TO38:PRINTCHR$(100);:NEXT
  137. 814 PRINTCHR$(105);:FORX=1TO5
  138. 816 PRINTCHR$(103)SPC(38)CHR$(104)" "CHR$(157);:NEXT
  139. 818 PRINTCHR$(106);:FORX=1TO38:PRINTCHR$(102);:NEXT:PRINTCHR$(107)
  140. 820 PRINT""TAB(9)"* MSD "+T$+" *"
  141. 822 PRINT"[145][145][145]"
  142. 824 GOSUB1750
  143. 826 PRINTTAB(12)"[158]READING DIRECTORY"
  144. 828 OPEN1,8,0,"$"+DR$
  145. 830 GET#1,B$:IFST<>0THEN850
  146. 832 IFF>=27THEN850
  147. 834 IFB$<>CHR$(34)THEN830
  148. 836 N$="":PRINT"":POKE214,8:PRINT
  149. 838 GET#1,B$:IFB$<>CHR$(34)THENN$=N$+B$:GOTO838
  150. 840 GET#1,B$:IFB$=CHR$(32)THEN840
  151. 842 IFLEFT$(N$,1)=" "THENF=F-1:GOTO$+B$:GOTO846
  152. 844 N$(F)=" "+N$
  153. 846 GET#1,B$:IFB$<>""THEN846
  154. 848 IFST=0THENF=F+1:GOTO830
  155. 850 CLOSE1
  156. 852 FORE=1TOF/2:PRINT""CHR$(64+E)""N$(E):NEXT
  157. 854 PRINT"":POKE214,8:PRINT
  158. 856 FORE=F/2+1TOF:PRINTSPC(20)""CHR$(64+E)""N$(E):NEXT
  159. 858 PRINT""
  160. 860 PRINTTAB(5)"      PRESS LETTER KEY TO         "
  161. 862 PRINTTAB(12)T$
  162. 864 GETM$:IFM$=""THEN864
  163. 866 IFM$=CHR$(13)THENRUN
  164. 868 IFM$<"A"ORM$>CHR$(64+F)THEN864
  165. 870 P=ASC(M$)-64:PRINT"[147]"
  166. 874 N$(P)=MID$(N$(P),2,LEN(N$(P)))
  167. 875 RETURN
  168. 876 OPEN15,8,15:PRINT#15,"C1:"+N$+"=0:"+N$
  169. 900 REM *** COPY ON DIFFERNT DISK ***
  170. 905 PRINT"[147]DUPLICATE DISK ? (Y/N)"
  171. 906 GETDU$:IFDU$=""THEN906
  172. 908 IFDU$="Y"THEN1190
  173. 909 IFDU$="N"THEN1001
  174. 1000 GOTO906
  175. 1001 PRINT"[147]DO YOU WISH TO NEW A DISK ? (Y/N)"
  176. 1002 GETDU$:IFDU$=""THEN1002
  177. 1003 IFDU$="Y"THENGOSUB300:GOTO1006
  178. 1004 IFDU$="N"THEN1006
  179. 1005 GOTO1002
  180. 1006 T$=" MSD SD-2 FILE COPIER"
  181. 1007 GOSUB800
  182. 1008 PRINTTAB(16)"[147] MSD FILE COPIER [146]"
  183. 1010 PRINT"DRIVE # "+DR$+" IS THE SOURCE DRIVE"
  184. 1011 ZP$=CHR$(48):IFDR$=CHR$(48)THENZP$=CHR$(49)
  185. 1012 PRINT"PLACE DESTNATION DISK INTO DRIVE # "+ZP$
  186. 1014 PRINT"PRESS RETURN TO COPY"
  187. 1016 GETD$:IFD$=""THEN1016
  188. 1017 IFD$<>CHR$(13)THEN1016
  189. 1020 OPEN15,8,15:PRINT#15,"C"+ZP$+":"+N$(P)+"="+DR$+":"+N$(P)
  190. 1021 PRINT"[147]ANY OTHER FILES TO COPY ? (Y/N)"
  191. 1022 GETD$:IFD$=""THEN1022
  192. 1024 IFD$="Y"THEN1007
  193. 1026 IFD$="N"THENRUN
  194. 1028 GOTO1022
  195. 1190 PRINT"[147] PLACE SOURCE DISK INTO DRIVE # 1"
  196. 1192 PRINT"PLACE DESTNATION DISK INTO DRIVE # 0"
  197. 1193 PRINT" CAUTION [146][160]!!     THIS WILL FORMAT THE     DESTNATION DISK !!"
  198. 1194 PRINT"PRESS RETURN TO COPY"
  199. 1195 GETD$:IFD$=""THEN1195
  200. 1196 IFD$<>CHR$(13)THEN1195
  201. 1198 OPEN15,8,15:PRINT#15,"D0=1"
  202. 1199 CLOSE15:RETURN
  203. 1200 REM *** COPY BOTH DOS PROGRAMS ***
  204. 1204 PRINT:PRINT"  USE DRIVE # 0  ":PRINT:PRINT
  205. 1205 PRINT"[147]":PRINT"  INSERT SOURCE DISK WITH WEDGE AND/OR    DOS";
  206. 1210 PRINT"  PROGRAM(S) AND PRESS <REETURN>"
  207. 1215 GETW$:IFW$=""THEN1215
  208. 1218 TYPE$="P"
  209. 1219 IFC0=1THENFILE$="  VIC-20 WEDGE":GOTO1235
  210. 1220 FILE$="     C-64 WEDGE":GOSUB1000
  211. 1225 FORC=1TO64:DOS%(C)=TEMP%(C):NEXT C:REM MOVE C -64 WEDGE TO SMALL BUFFER
  212. 1230 FILE$="DOS 5.1"
  213. 1232 PRINT:PRINT"  USE DRIVE # 1  ":PRINT:PRINT
  214. 1235 GOSUB1000:PRINT:PRINT"  INSERT DESTINATION DISK AND PRESS <RETURN>"
  215. 1240 GETW$:IFW$=""THEN1240
  216. 1245 GOSUB1050:IFC0=1THENRETURN
  217. 1250 FORC=1TO64:TEMP%(C)=DOS%(C):NEXT C
  218. 1255 FILE$="  C-64 WEDGE"I=64:GOSUB1050:REM WRIGHT C-64 WEDGE
  219. 1290 RETURN
  220. 1300 IFTEST=0THENTEST=1:LOAD"MSD FILE LOCKER",8,1
  221. 1320 IF TEST2=0THENTEST2=1:LOAD"C64 AUTOSTART",8,1
  222. 1330 IFTEST1=0THENTEST1=1:LOAD"MSD UNSCRATCH",8,1
  223. 1400 OPEN15,8,15,"I0"
  224. 1410 PRINT#15,"M-R"CHR$(00)CHR$(192)CHR$(3)
  225. 1420 GET#15,A$:GET#15,B$:GET#15,C$
  226. 1430 IFB$<>"."THENPRINT" ERROR [146]":GOTO60
  227. 1440 D$=A$+B$+C$:PRINT"[147]":PRINT "       MSD DOS V "+D$+" [146]"
  228. 1450 CLOSE15:PRINT"      PRESS SHIFT KEY TO CONTINUE"
  229. 1460 WAIT653,1
  230. 1500 CLR:PRINT"[147]"
  231. 1501 PRINT"            ******************"
  232. 1502 PRINT"            *    MSD SD-2    *"
  233. 1503 PRINT"            *  DISK MANAGER  *"
  234. 1504 PRINT"            *     PAGE 2     *"
  235. 1505 PRINT"            ******************"
  236. 1506 PRINT:PRINT" 1.  RETURN TO PAGE 1 [146]"
  237. 1507 PRINT" 2. MSD DOS FINDER"
  238. 1508 PRINT" 3. QUICK MERGE"
  239. 1509 PRINT" 4. MSD RENUMBER"
  240. 1540 INPUT"     CHOICE    [157][157][157][157]";CH2
  241. 1541 IF(CH2<1)OR(CH2>16)THENPRINT"[145]";:GOTO1540
  242. 1542 ONCHOGOSUB10,1400,1660,2202
  243. 1604 GET#FI,BY$:IFBY$<>""THENPRINT#3,BY$;:GOTO1604
  244. 1606 PRINT#3,NU$;:RETURN
  245. 1608 GET#FI,BY$:IFBY$=""THENBY=0:RETURN
  246. 1610 BY=ASC(BY$):RETURN
  247. 1612 DV=WD/256:HI=INT(DV):LO=WD-HI*256:PRINT#3,CHR$(LO);CHR$(HI);:RETURN
  248. 1614 GOSUB1608:LO=BY:GOSUB1608:LI(FI)=BY*256+LO
  249. 1616 GOSUB1608:LO=BY:GOSUB1608:LN(FI)=BY*256+LO
  250. 1618 IFLI(FI)>0THENPRINTTAB((FI-1)*9);LN(FI);"[145]"
  251. 1620 CA(FI)=CA(FI)+LS(FI):LS(FI)=LI(FI)-CA(FI):RETURN
  252. 1622 LI(3)=LI(3)+LS(FI):WD=LI(3):GOSUB1612:WD=LN(FI):GOTO1612
  253. 1624 GOSUB1622:GOSUB1604:GOTO1614
  254. 1626 IFLI(1)=0ANDLI(2)=0THENRETURN
  255. 1628 IFLI(2)=0THENFI=1:GOSUB1624:GOTO1626
  256. 1630 IFLI(1)=0THENFI=2:GOSUB1624:GOTO1626
  257. 1632 IFLN(1)<LN(2)THENFI=1:GOSUB1624:GOTO1626
  258. 1634 IFLN(1)>LN(2)THENFI=2:GOSUB1624:GOTO1626
  259. 1636 FI=1:GOSUB1624:FI=2:GOSUB1638:GOTO1626
  260. 1638 GET#FI,BY$:IFBY$<>""THEN1638
  261. 1640 GOTO1614
  262. 1642 GOSUB1608:LO=BY:GOSUB1608:CA(FI)=BY*256+LO:RETURN
  263. 1644 WD=CA(3):GOTO1612
  264. 1646 PRINTPROMPT$;"[160][160][160][160][160][157][157][157][157][157]";
  265. 1648 INPUTFI$:FC$=LEFT$(FI$,1)
  266. 1650 NULL=FC$="[160]":QUIT=FC$="*":RETURN
  267. 1652 OPENFI,8,FI+2,"0:"+FI$
  268. 1654 INPUT#15,EN,EM$,ET,ES
  269. 1656 ERR=EN>19:IFERRTHENPRINTEN;EM$:CLOSEFI
  270. 1658 RETURN
  271. 1660 DIMCA(3),LI(3),LN(2),LS(2)
  272. 1662 NU$=CHR$(0)
  273. 1664 PRINT:PRINT"     DISK MERGE     "
  274. 1666 OPEN15,8,15
  275. 1668 FI=1:PROMPT$="  PRIMARY FILE"
  276. 1670 GOSUB1646:IFNULLTHEN1670
  277. 1672 IFQUITTHEN1722
  278. 1674 GOSUB1652:IFERRTHEN1670
  279. 1676 FI=2:PROMPT$="SECONDARY FILE"
  280. 1678 GOSUB1646:SECNULL=NULL
  281. 1680 IFSECNULLTHENPRINT"*RELOCATE ONLY*":GOTO1688
  282. 1682 IFQUITTHEN1722
  283. 1684 AF$=FI$
  284. 1686 GOSUB1652:IFERRTHEN1678
  285. 1688 FI=3:PROMPT$="   MERGED FILE"
  286. 1690 GOSUB1646:IFNULLTHEN1690
  287. 1692 IFQUITTHEN1722
  288. 1694 FI$=FI$+",P,W":GOSUB1652:IFERR=0THEN1706
  289. 1696 IFEN<>70THEN1690
  290. 1698 PRINT"[145]                [145]"
  291. 1700 BF$=FI$:CLOSE2:GOSUB1652:E2=ERR
  292. 1702 FI=2:FI$=AF$:GOSUB1652:FI=3:FI$=BF$
  293. 1704 IFE2THEN1688
  294. 1706 INPUT"  BASE ADDRESS  1025[157][157][157][157][157][157]";BASE$
  295. 1708 IFLEFT$(BASE$,1)="*"THEN1722
  296. 1710 CA(3)=VAL(BASE$):LI(3)=CA(3)
  297. 1712 FI=1:GOSUB1642:GOSUB1614
  298. 1714 IFNOTSECNULLTHENFI=2:GOSUB1642:GOSUB1614
  299. 1716 GOSUB1644
  300. 1718 GOSUB1626
  301. 1720 PRINT#3,NU$;NU$;
  302. 1722 CLOSE3:CLOSE2:CLOSE1:CLOSE15
  303. 1724 CLR:GOTO10
  304. 1750 PRINT:PRINT"       WHICH DISK DRIVE (0/1) ? [146]";
  305. 1752 GETDR$:IFDR$<>"1"ANDDR$<>"0"THEN1752
  306. 1754 PRINTTAB(34)DR$:D=VAL(DR$):RETURN
  307. 2202 POKE53280,0:POKE53281,0:POKE646,1:MX=300:DIMLN(MX)
  308. 2204 PRINT"[147]           BASIC FILE RENUMBER [146]":GOSUB2328:Z$=CHR$(0)
  309. 2206 PRINT"              USE DRIVE#  0 [146]"
  310. 2208 CLOSE2:CLOSE3:CLOSE15:PRINT:INPUT"  OLD PROGRAM NAME ";F1$
  311. 2210 INPUT"  NEW PROGRAM NAME ";F2$:IFIC<>0THEN2224
  312. 2212 INPUT"  STARTING LINE NUMBER ";SN
  313. 2214 SN=INT(SN):IFSN<0THEN2212
  314. 2216 INPUT"  INCREMENT ";IC
  315. 2218 IC=INT(IC):IFIC<1THEN2216
  316. 2220 INPUT"  CROSS REFERANCE (Y/N) ";RF$:IFRF$<>"Y"ANDRF$<>"N"THEN2220
  317. 2222 IFRF$="Y"THENDIMCR$(MX)
  318. 2224 PRINT"  OPENING FILES":OPEN15,8,15
  319. 2226 PRINTTAB(5)F1$:OPEN2,8,2,"0:"+F1$+",P,R":GOSUB2320:IFER>0THEN2208
  320. 2228 PRINTTAB(5)F2$:OPEN3,8,3,"0:"+F2$+",P,W":GOSUB2320:IFER>0THEN2208
  321. 2230 PRINT"             PASS 1   [146]":PRINT
  322. 2232 GET#2,A$:GET#2,B$:NL=0:L1=ASC(A$+Z$)+256*ASC(B$+Z$)
  323. 2234 GET#2,A$:GET#2,B$:L2=ASC(A$+Z$)+256*ASC(B$+Z$):IFL2=0THEN2244
  324. 2236 GET#2,A$:GET#2,B$:LN(NL)=ASC(A$+Z$)+256*ASC(B$+Z$)
  325. 2238 PRINT"           [145]LINE";LN(NL):NL=NL+1
  326. 2240 IFNL>=MXTHENPRINT"           LINE TABLE OVERFLOW ":GOTO2316
  327. 2242 POKE828,L2-L1-4:SYS829:L1=L2:GOTO2234
  328. 2244 CLOSE2:OPEN2,8,2,"0:"+F1$+",P,R"
  329. 2246 PRINT"             PASS 2   [146]":PRINT:GT=137:GS=141:TH=167:QU=34:LK=-1
  330. 2248 IFSN+NL*IC>63999THENPRINT"  LINE NUMBER TOO BIG ":GOTO2316
  331. 2250 GET#2,A$:GET#2,B$:LL=0:L1=ASC(A$+Z$)+256*ASC(B$+Z$):N1=L1
  332. 2252 V=L1:GOSUB2326
  333. 2254 GET#2,A$:GET#2,B$:L2=ASC(A$+Z$)+256*ASC(B$+Z$):IFL2=0THEN2302
  334. 2256 GET#2,A$:GET#2,B$:CL=ASC(A$+Z$)+256*ASC(B$+Z$)
  335. 2258 LK=LK+1:PRINT"           [145]LINE";CL
  336. 2260 L=L2-L1-4:POKE828,L:SYS829
  337. 2262 T2$="":I=851:L=L+I-1:QQ=0
  338. 2264 C=PEEK(I):IFC=QUTHENQQ=NOTQQ
  339. 2266 IFGT>CORQQTHEN2296
  340. 2268 IFGT<>CANDGS<>CANDTH<>CTHEN2296
  341. 2270 TY$=" ":IFC=GSTHENTY$=" *"
  342. 2272 T2$=T2$+CHR$(C):T3$="":I=I+1:NF=-1
  343. 2274 C=PEEK(I)
  344. 2276 IFC>47ANDC<58THENNF=0
  345. 2278 IF(C>47ANDC<58)ORC=32THENT3$=T3$+CHR$(C):I=I+1:GOTO2274
  346. 2280 IFNFTHEN2268
  347. 2282 J=0:TN=VAL(T3$):LN(NL)=TN
  348. 2284 IFLN(J)<>TNTHENJ=J+1:GOTO2284
  349. 2286 IFJ>=NLTHENPRINT" NONEXISTENT: "TN:PRINT:TN=0:GOTO2290
  350. 2288 TN=SN+IC*J
  351. 2290 T3$=STR$(TN):T2$=T2$+MID$(T3$,2)
  352. 2292 IFRF$="Y"THENCR$(J)=CR$(J)+TY$+MID$(STR$(SN+IC*LK),2)
  353. 2294 IFC=44THEN2272
  354. 2296 T2$=T2$+CHR$(C):I=I+1:IFI<=LTHEN2264
  355. 2298 N1=N1+LEN(T2$)+4:V=N1:GOSUB2326:V=SN+IC*LL:GOSUB2326
  356. 2300 PRINT#3,T2$;:LL=LL+1:L1=L2:GOTO2254
  357. 2302 PRINT#3,Z$+Z$;
  358. 2304 CLOSE2:CLOSE3:CLOSE15:IFRF$<>"Y"THEN2316
  359. 2306 PRINT"   S=SCREEN":PRINT"   P=PRINTER":PRINT"   Q=QUIT"
  360. 2308 INPUT"   CROSSREF(S/P/Q)";Q$:IFQ$="Q"THEN2316
  361. 2310 IFQ$="S"THENWI=40:OPEN4,3:GOSUB2338:CLOSE4:GOTO2308
  362. 2312 IFQ$="P"THENWI=80:OPEN4,4:GOSUB2338:CLOSE4:GOTO2308
  363. 2314 GOTO2308
  364. 2316 CLOSE2:CLOSE3:CLOSE15:PRINT:PRINT"DONE"
  365. 2318 END
  366. 2320 INPUT#15,ER,E1$,E2,E3:IFER=0THENRETURN
  367. 2322 PRINTER;E1$;E2;E3
  368. 2324 RETURN
  369. 2326 PRINT#3,CHR$(V-INT(V/256)*256);CHR$(INT(V/256));:RETURN
  370. 2328 S=0:FORI=829TO850:READV:POKEI,V:S=S+V:NEXTI
  371. 2330 IFS=3036THENRETURN
  372. 2332 PRINT"ERROR IN DATA STATEMENTS":END
  373. 2334 DATA162,2,32,198,255,162,0,32,207,255,157
  374. 2336 DATA83,3,232,206,60,3,208,244,76,204,255
  375. 2338 PRINT#4," CROSS - REFERENCE FOR "F2$
  376. 2340 PRINT#4," LINE  REFERENCES ":BL$="        "
  377. 2342 FORI=0TONL:IFCR$(I)=""THEN2358
  378. 2344 J=2:IFI<>NLTHENN$=STR$(SN+IC*I)+BL$:PRINT#4,LEFT$(N$,7)"-";:GOTO2348
  379. 2346 PRINT#4," ERRORS ";
  380. 2348 K=1
  381. 2350 CH$=MID$(CR$(I),J,1):PRINT#4,CH$;:J=J+1:K=K+1:IFJ>LEN(CR$(I))THEN2356
  382. 2352 IFK>WI-14ANDCH$=" "THENPRINT#4:PRINT#4,BL$;:GOTO2348
  383. 2354 GOTO2350
  384. 2356 PRINT#4
  385. 2358 NEXTI:GOTO10
  386.